﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using AdminCondominio.Dominio;
using AdminCondominio.Negocio;


namespace AdminCondominio.Pruebas
{
    [TestFixture]
    public class TestViviendaService
    {
        private IApplicationContext Spring=null;

        ViviendaService viviendaService;
        [TestFixtureSetUp]
        public void InicializarPruebas()
        {
     
            Spring = new XmlApplicationContext(
                "assembly://AdminCondominio/AdminCondominio/capaPersistencia.xml",
                "assembly://AdminCondominio/AdminCondominio/capaNegocio.xml"
                );
            
              viviendaService = (ViviendaService)Spring.GetObject("viviendaService");
            Assert.NotNull(viviendaService);
        }


          [Test]
        public void TestCrearVivienda()
        {
            Vivienda viviendaACrear = new Vivienda();
            viviendaACrear.Residente = new Residente();

            viviendaACrear.Residente.CoResidente = 1;
            viviendaACrear.Ubicacion = "Av Las Palmas";
            viviendaACrear.NuVivienda = 99;
            viviendaACrear.TxMetraje = "34x45";
            viviendaACrear.TiVivienda = "Departamento";

            Vivienda vivienda = null;
         
            //Vivienda numVivienda = viviendaService.ObtenerNumVivienda(viviendaACrear.NuVivienda);
            //if (numVivienda!=null){
            Assert.DoesNotThrow(delegate
              {
                  vivienda = viviendaService.RegistrarVivienda(viviendaACrear);

              });
            //}
               //Assert.NotNull(vivienda);
              //Assert.Greater(vivienda.CoVivienda, 0);
        }

          public void TestIntentarCrearViviendaRepetido()
          {

              Vivienda viviendaACrear = new Vivienda();
              viviendaACrear.Residente = new Residente();

              viviendaACrear.Residente.CoResidente = 1;
              viviendaACrear.Ubicacion = "Av Las Lomas";
              viviendaACrear.NuVivienda = 10;
              viviendaACrear.TxMetraje = "37x45";
              viviendaACrear.TiVivienda = "Condominio";

              Assert.Catch<Exception>(delegate
              {
                  viviendaService.RegistrarVivienda(viviendaACrear);
              });
              Assert.Catch<Exception>(delegate
              {
                  viviendaService.RegistrarVivienda(viviendaACrear);
              });

          }

        [Test]

         public void TestModificarVivienda(){
             Vivienda viviendaAModificar = new Vivienda();
             viviendaAModificar.Residente = new Residente();

             viviendaAModificar.Residente.CoResidente = 1;
             viviendaAModificar.Ubicacion = "AV. Alameda";
             viviendaAModificar.NuVivienda = 23;
             viviendaAModificar.TxMetraje = "150x320";
             viviendaAModificar.TiVivienda = "Condominio condominio";
             viviendaAModificar.CoVivienda = 16;

             
      
             Vivienda vivienda = null;
             Assert.DoesNotThrow(delegate
             {
                 vivienda = viviendaService.ModificarVivienda(viviendaAModificar);

             });

         }


         [Test]
        public void TestListarVivienda()
        {
           
            String noresidente = "12365478";
            ICollection<Vivienda> vivienda= null;
            Assert.DoesNotThrow(delegate
            {
                vivienda = viviendaService.ListarVivienda(noresidente);
                
            });
            Assert.NotNull(vivienda);

        }
        
    }
}